#-*- coding:utf-8 -*-
import random,string
#此文件用于汇总list数据类型的自定义操作
#以类的形式存在
class Listoperate:
    '''
    本类用于汇总list数据类型的自定义操作
    '''
    def __init__(self):
        #初始化一些配置
        pass

    def GetIndex(self,content,key):
        '''
        得到列表content中所有值为key的索引
        '''
        indexList = list()
        lent = len(content)
        news = content[:]       #硬拷贝
        j = 0
        while news:
            cnum = news.count(key)      #获得关键词的数量
            if cnum == 0:
                #表示没有关键词了
                return indexList
            elif cnum == 1:
                #表示只有一个元素,直接返回即可
                intmp = news.index(key)
                indexList.append(j + intmp)
                return indexList
            elif cnum == lent:
                #列表中的数据都是一样的
                for i in range(lent):
                    indexList.append(i)
                return indexList
            else:
                intmp = news.index(key)
                indexList.append(j+intmp)
                j = j + intmp + 1
                news = news[(intmp + 1):]
        return indexList

    def List2str(self,x,y):
        '''
        List to str ,by using reduce function.
        '''
        return x + y

class StrOperate:
    '''
    自己定义的字符串操作
    '''
    def __init__(self):
        pass
    def Random_str(self,lent):
        '''
        生成指定长度的随机字符串
        '''
        a = list(string.ascii_letters)
        random.shuffle(a)
        return ''.join(a[:lent])

    def AssignLength_str(self,lent,chara = '\0'):
        '''
        生成指定长度,并由chara直译的字符串
        '''
        k = '\0'
        for i in range(lent-1):
            k.join('\0')
        return k

class DictOperate:
    '''
    dict operate.
    '''
    def __init__(self):
        pass

    def sortedDictValues(self,adict):
        '''
        '''
        keys = adict.keys()
        keys.sort()
        return map(adict.get,keys)

    def sortDic(self,Dict,valuepos,r):
        '''
        '''
        return sorted(Dict.items(),key=lambda e:e[valuepos],reverse = r)

